linuxfandomcom_it-20200214-history
Shell
I Comandi e la Shell Finora non avevamo affrontato approfonditamente la questione della famigerata "Linea di comando", è giunto il momento di farlo ricordando innanzitutto le funzioni della Linea di Comando. Quando clicchiamo su un pulsante della barra degli strumenti di un qualsiasi programma, impartiamo un ordine al sistema in modo che ne derivi una risposta precisa e prevedibile. Quando clicchiamo sul pulsante "Salva", il programma avvia un processo tale per cui il file prodotto viene registrato e conservato in una cartella particolare a cui potremo risalire nel momento del bisogno. In genere il cliccare sul pulsante ci determina la negazione conoscitiva per cui non ci interessa di sapere come sia potuto accadere il meccanismo di salvataggio. L'interfaccia grafica dei programmi moderni si fonda su azioni effettuate con il puntatore del mouse. Prima dell'avvento delle interfacce grafiche le azioni venivano ottenute attraverso la digitazione di comandi testuali effettuata in una finestra di prompt che si chiama Shell. In essa si dovevano digitare ordini specifici per ottenere risposte specifiche e rapidissime. Questo imponeva la perfetta conoscenza della sintassi e delle regole di impartizione degli ordini e non tutti erano in grado di farlo. Il vantaggio era quello di avere un sistema efficientissimo, potentissimo, rapidissmo. L'avvento delle interfacce grafiche ha diffuso l'uso del computer in modo vertiginoso ed è impossibile oggi ipotizzare sistemi operativi privi di veste grafica, tuttavia queste vesti grafiche hanno un peso ed un ingombro gigantesco, tali per cui il computer deve praticamente sopportare un carico di lavoro immenso per fare cose che, da linea di comando, sarebbero uno scherzetto. Nel mondo Windows l'uso dell'interfaccia grafica è un dovere, un comandamento, al punto che i computer di appena una generazione tecnologica precedente, hanno difficoltÃ gravi nel soddisfare le esigenze di programmi esosi e graficamente superflui. Nel mondo Linux le cose sono invece diverse. Non si è ritenuto fondamentale l'uso della grafica, quanto invece la ottimizzazone d'impiego per cui l'uso della linea di comando è ancora una soluzione praticata per avere prestazioni che in altri sistemi sono irraggiungibili. Questa condizione è la gioia e il cruccio di tutti gli utenti Linux e soprattutto di quelli che vorrebbero usare Linux. Non è facile usare la linea di comando; richiede impegno, tempo, informazione, lettura e pazienza, ma in alcune condizioni è l'unica soluzione, come nello scaricamento e installazione di nuovi programmi. Per aprire la Shell e usare i comandi, basta cliccare sull'icona del terminale "Konsole" posta nella barra principale. In ambiente GNOME basta cliccare sull'icona del "Terminale" posta nella barra delle applicazioni. In un batter d'occhio si apre una finestra molto semplice, quasi spoglia, con una striminzita riga di testo con indicato il nome dell'utente e l'hostname (nome del computer), per definizione la shell parte dalla directory /home dell'albero delle directory : user@hostname:~$ Il terminale è quindi in grado di ricevere uno o più ordini. Il simbolo $ indica il prompt della shell ovvero l'attesa di un comando. Vediamo ora alcuni dei comandi semplici con i quali usare la shell e rendersi conto dela sua potenza. NOTE: La scritta Invio indica che dopo la digitazione del comando è necessario premere il tasto Invio per rendere il comando eseguibile. Generici ;whoami:Per sapere il proprio nome utente attraverso la shell bisogna digitare il comando whoami. $ whoami Invio giorgio ;who:Digitare who per sapere quanti utenti sono presenti nel sistema specie se si tratta di una rete domestica. $ who Invio giorgio :0 May 11 09:21 ;w''':Digitare '''w fornisce informazioni sugli utenti presenti nel sistema e le operazioni che stanno eseguendo. $ w Invio 11:29:13 up 2:09, 1 user, load average: 1.34, 1.58, 1.28 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT giorgio :0 - 09:21 ?xdm? 28:38m 0.15s /bin/sh /usr/bi ;apropos:Digitare apropos seguito da un genere di utilizzo per avere un elenco di strumenti e applicazioni in grado di effettuare particolari compiti (grafica, musica,ecc). Si devono usare termini appropriati ed in inglese (audio, graphic, console, ecc.) $ apropos audio Invio amarok (1) - An audio player for KDE audacity (1) - Graphical cross-platform audio editor audiocompose (1) - Compose an audio fragment for inclusion in a mail message audiosend (1) - Send an audio email message aumix (1) - adjust audio mixer ;whatis:Digitare whatis seguito dal nome di un programma consente di sapere le finalità e le caratteristiche sommarie del programma $whatis firefox Invio firefox (1) - a Web browser for X11 derived from the Mozilla browser ;'--help':Digitare '--help' preceduto dal nome di uno strumento per ottenere estese informazioni sul modo di usare il programma. $ firefox --help Invio Usage: /usr/lib/firefox/firefox-bin [ options ... ] URL where options include: X11 options --display=DISPLAY X display to use --sync Make X calls synchronous --no-xshm Don't use X shared memory extension --xim-preedit=STYLE --xim-status=STYLE --g-fatal-warnings Make all warnings fatal Mozilla options -height Set height of startup window to . -h or -help Print this message. -width Set width of startup window to . -v or -version Print Firefox version. -P Start with . -ProfileManager Start with profile manager. -UILocale Start with resources as UI Locale. -contentLocale Start with resources as content Locale. -jsconsole Open the JavaScript console. -browser Open a browser window. Usage: firefox -flags [] ;man:Digitare man seguito dal nome di uno strumento, per consultarne il manuale d'impiego $man firefox Invio FIREFOX(1) Linux User's Manual FIREFOX(1) NAME firefox - a Web browser for X11 derived from the Mozilla browser SYNOPSIS firefox OPTIONS URL /usr/lib/firefox/firefox-bin OPTIONS URL DESCRIPTION Firefox is an open-source web browser, designed for standards compli- ance, performance and portability. ;info:Digitare info per visualizzare il lunghissimo elenco di manuali presenti e relativi al sistema $ info Invio Digitare info seguito dal nome di uno strumento per ottenere informazioni specifiche sullo strumento. $ info tar Invio File: tar.info, Node: Top, Next: Introduction, Up: (dir) GNU tar: an archiver tool ************************* This manual is for GNU `tar' (version 1.15.1, 14 June 2005), which creates and extracts files from archives. Copyright © 1992, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2003, 2004 Free Software Foundation, Inc. ;la freccia su:Premete la freccetta "su" per ripetere l'ultimo comando digitato ;history:Digitare history per osservare la cronologia degli ordini impartiti alla shell $ history Invio 1 dmesg 2 ./configure 3 make 4 tar -xvzf sodipodi-0.34.tar.gz 5 /home/giorgio/Desktop/tar -xvzf sodipodi-0.34.tar.gz 6 ./configure Files e Directories ;mkdir:Digitare mkdir seguito dal nome della directory che si vuole creare. $ mkdir musica Invio Questo crea una directory nella directory attuale. Se si vuole creare una directory in una diretory diversa occorre digitare mkdir seguito dall'indirizzo della directory di destinazione e dal nome della nuova directory. $ mkdir /multimedia/musica Invio ;cd -':Digitare '''cd -' per raggiungere l'ultima directory visitata $ cd - Invio ;'''ls -l:Digitare ls -l per osservare le caratteristiche dei files contenuti nella directory attuale. $ ls -l Invio total 32 drwxr-xr-x 2 giorgio giorgio 4096 May 6 11:38 Desktop drwxr-xr-x 18 giorgio giorgio 4096 May 8 15:49 Documenti drwxr-xr-x 2 giorgio giorgio 4096 Apr 28 04:03 ISO drwxr-xr-x 3 giorgio giorgio 8192 May 4 07:46 Immagini drwxr-xr-x 2 giorgio giorgio 4096 Apr 20 07:53 Opera drwxr-xr-x 3 giorgio giorgio 4096 Apr 3 08:06 Ripped Music drwxr-xr-x 2 giorgio giorgio 4096 Dec 10 2002 tmp ;locate:Digitare locate seguito da un modello di file per avere un elenco di tutti i file che corrispondono a quel modello. $ locate mp3 Invio /etc/alternatives/mp3-decoder /etc/alternatives/mp3-decoder.1.gz /etc/skel/.kde/share/mimelnk/audio/x-mp3.desktop /home/giorgio/.kde/share/mimelnk/audio/x-mp3.desktop /home/giorgio/Documenti/macinizio/mp3ragel.gif /home/giorgio/Documenti/Music/001 catalina island.mp3 /home/giorgio/Documenti/Music/001 good morning america.mp3 /home/giorgio/Documenti/Music/002 nights over egypt.mp3 /home/giorgio/Documenti/Music/002 real love.mp3 ;find -mtime:Digitare find -mtime seguito dal valore temporale desiderato per vedere i file in base alla data di modifica ~/Documenti$ find -mtime -1 Invio ./scritti ./scritti/Il vecchio ./B3 - un sito!/KANOTIX ./B3 - un sito!/KANOTIX/Lettera ./B3 - un sito!/SoloLinux ./B3 - un sito!/SoloLinux/MondoLinux_9.htm Va ricordato che per avere un risultato vasto e completo basta inserire il seguente comando $find -mtime 1 Invio e si otterranno le informazioni di moltissimi files. Per vedere i files modificati 3 giorni fa, basta digitare il comando $find ~ -mtime -3 -daystart Invio per ottenere un elenco di files modificati entro le precedenti 72 ore. Per vedere l'elenco dei files modificati nelle ultime 24 ore basta inserire il comando $find -mtime -1 Invio ;gzip:Digitare gzip seguito dal nome del file per determinarne una compressione. $ gzip /Documenti/Trusted_computing.html Invio La compressione determina la formazione di un file con estensione ".gz" e l'eliminazione del file non compresso. ;gunzip:Digitare gunzip seguito dal nome del file da decomprimere $ gunzip /Documenti/Trusted_computing.gz Invio La decompressione del file determina la cancellazione del file compresso e la produzione di un file espanso. ;cd:Digitare cd seguito dal nome della directory per accedere a quella directory. Tenere a mente che si è sempre in una directory e potete accedere in ogni directory gerarchicamente superiore o inferiore. $ cd giochi Se la directory games non è collocata gerarchicamente sotto alla directory corrente, è necessario digitare il percorso coretto. $ cd /usr/giochi Per muoversi in una directory superiore, uare il comando scorciatoia. $ cd .. Usare cp -r per copiare la directory e tutto il suo contenuto Digitare cp -r seguito dal nome di una direcory esistente ed il nome di una nuova directory. cp -r testing newdir Questo comando vi risparmia tempo se avete bisogno di effettuare un mirror di una directory con files. ;logout:Digitare logout scollegherà il vostro account dal sistema. Digitare logout nella shell per disconnettersi dalla Linux box o per scollegare un particolare utente dal sistema. Si raccomanda di usare logout quando si è terminato di usare il proprio account di root! $ logout ;ls:Digitare ls per vedere la lista dei files e delle directories collocate nella directory corrente. Se siete nella directory chiamata giochi e digitate ls, apparirà una lista che contiene i files della directory giochi e le eventuali sottodirectories. $ ls Mail ls /usr/bin Digitate ls -alt per vedere la lista di tutti i files (inclusi i files .rc) e tutte le directories collocate nella directory corrente. La lista comprenderà anche una dettagliata ed utile descrizione dei contenuti. Esempio : $ ls -alt ls -alt /usr/bin Se lo schermo scorre via e non avete visto il numero dei files, provate ad usare il comando |more alla fine come : $ ls -alt |more * Nella Bash (Linux shell) spesso il comando abbreviato "l" è disponibile. Per avere una lista completa ed estesa dei files e directories, potete semplicemente digitare l''' ;'''more:Digitare more seguito dal nome di un file testuale per leggerne i contenuti. Esempio : $ more testfile.txt ;passwd:Digitare passwd e premere Invio. Vedrete il messaggio Changing password per tuonome. Alla voce "Old password:" digitare la vecchia password. Quindi, sopo la comparsa di "Enter new password:" digitare la nuova password. Il sistema controllerà due volte la nuova password. Dopo la comparsa di "Verify:" digitare nuovamente la nuova password e poi premere Invio. ;print:Digitare print ''filename. Sostituite la parola ''filename con il nome del file da stampare.' ;pwd:Digitare pwd e premere Invio. Vedrete il nome completo della directory in cui vi trovate. Questo è il percorso completo della directory ed è molto pratico.' ;mv:Digitare mv seguito dal nome della attuale directory ed il nuovo nome da applicare alla directory. $ mv musica audio ;rmdir:Digitare rmdir per rimuovere una directory esistente (assicuratevi di avere i permessi per farlo). Digitate rmdir seguito dal nome della directory da eliminare. $ rmdir testdir Non potete rimuovere directory con files all'interno attraverso questo comando. Il comando rmdir è principalmente usato per rimuovere directory vuote. ;chmod:Il comando chmod permette di modificare gli accessi ai contenuti di files e cartelle. Per vedere le configurazioni dei files, al prompt della shell occrre digitare : ls -alt Potete vedere il risultato qui sotto : total 364 drwxr-xr-x 2 giorgio giorgio 4096 May 10 16:44 .fuse drwxr-xr-x 9 giorgio giorgio 4096 May 10 16:44 .opera -rw------- 1 giorgio giorgio 9997 May 10 16:39 .xsession-errors drwx------ 2 giorgio giorgio 4096 May 10 16:29 .gconfd drwx------ 3 giorgio giorgio 4096 May 10 16:05 .gconf drwxr-xr-x 48 giorgio giorgio 4096 May 10 15:42 . drwxr-xr-x 2 giorgio giorgio 4096 May 10 15:42 .qt Cosa significano le lettere poste davanti al nome dei file? r''' indica che il file è leggibile (alcuni possono leggere il file) '''w indica che il file egrave; scrivibile (alcuni possono editare il file) x''' indica che il file è eseguibile (alcuni possono eseguire il file) '-' indica che non ci sono permessi assegnati al file I permessi vengono applicati ad un file in relazione al proprietario, al gruppo cui appartiene il proprietario ed a terze persone.Si viene quindi ad avere una tripletta di permessi a loro volta costituie da tre possibilità Un file Può essere quindi leggibile, scrivibile ed eseguibile dal proprietario, leggibile ed eseguibile dal gruppo cui appartiene il proprietario e solo eseuibile da terze persone (rwx r-x r--) Usare chmod seguito dal permesso che si vuole cambiare attraverso un semplice fattore numerico. chmod 755 filename L'esempio appena fatto garantisce ogni diritto al proprietario (7), il diritto di leggere ed eseguire il file al gruppo ed agli altri utenti(5) ;'''cp:Digitare cp seguito dal nome di un file già esistente ed il nome di un nuovo file. $ cp newfile newerfile Per copiare un file in una directory differente (senza cambiarne il nome), specificare il nome della directory di accoglimento $ cp newfile testdir Per copiare il file in una directory differente cambiandone anche il nome, dovete speificare la directory/il nuovo nome del file. $ cp newfile testdir/newerfile ;file:Digitare file seguito dal nome di un file esistente nella directory. $ file emergency3_demo.exe OUTPUT: MS-DOS executable (EXE) Questo permette di sapere di che tipo di file si tratta e che uso se ne può fare. ;mv:Digitare mv seguito dall'attuale nome del file e dal nuovo nome del file. $ mv oldfile newfile Digitare mv seguito dal nome del file e dalla nuova directory dove si vuole spostare il file. $ mv newfile testdir ;rm:Digitare rm seguito dal nome del file che si intende rimuovere. $ rm newfile Usare il carattere asterisco per rimuovere diversi file in un sol colpo. $ rm n* Questo comando rimuove tutti i files che cominciano con la n. Digitare rm -i seguito dal nome del file, se volete assicurarvi che il file sia stato effettivamente rimosso.